package com.secbro.controller;

import com.secbro.model.Address;
import com.secbro.model.fact.AddressCheckResult;
import com.secbro.model.opint.PointDomain;
import org.kie.api.runtime.KieSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;

/**
 * 你的支持是我努力的最大动力！社区的建立离不开你的支持。
 * 此系列课程正在持续更新中，相关讨论QQ（593177274）已经建立，欢迎大家加入讨论。
 * 如有疑问可以留言也可以发送本人邮箱secbro2@gmail.com。
 */
@RequestMapping("/test")
@Controller
public class TestController {

    @Autowired
    private KieSession kieSession;

    @ResponseBody
    @RequestMapping("/address")
    public void test(){
        Address address = new Address();
        address.setPostcode("99425");

        AddressCheckResult result = new AddressCheckResult();
        // 将规则引擎需要的类导入到session 中
        kieSession.insert(address);
        kieSession.insert(result);
        int ruleFiredCount = kieSession.fireAllRules(); // 进行规则校验
        System.out.println("触发了" + ruleFiredCount + "条规则");

        if(result.isPostCodeResult()){
            System.out.println("规则校验通过");
        }

    }

    @ResponseBody
    @RequestMapping("/run1")
    public Object run1(){
        PointDomain pointDomain = new PointDomain();

        pointDomain.setBirthDay(true);
        pointDomain.setBillThisMonth(1);
        pointDomain.setBuyMoney(10);
        pointDomain.setBackNums(0);
        pointDomain.setBuyNums(1);
        pointDomain.setPoint(100);
        pointDomain.setBackMondy(0);
        kieSession.insert(pointDomain);
        int ruleFiredCount = kieSession.fireAllRules(); // 进行规则校验
        System.out.println("触发了" + ruleFiredCount + "条规则");

        return pointDomain;

    }

}
